// utils/api.js
const BASE_URL = 'http://localhost:8080/api' // 后端API基础URL

// 请求封装
function request(options) {
  wx.showLoading({
    title: '加载中'
  })

  return new Promise((resolve, reject) => {
    wx.request({
      url: BASE_URL + options.url,
      method: options.method || 'GET',
      data: options.data || {},
      header: {
        'Content-Type': 'application/json',
        'Authorization': wx.getStorageSync('token') || ''
      },
      success(res) {
        wx.hideLoading()
        
        if (res.statusCode === 200) {
          resolve(res.data)
        } else {
          wx.showToast({
            title: '请求失败',
            icon: 'none'
          })
          reject(res)
        }
      },
      fail(err) {
        wx.hideLoading()
        wx.showToast({
          title: '网络错误',
          icon: 'none'
        })
        reject(err)
      }
    })
  })
}

// 用户相关API
const userApi = {
  // 登录
  login(data) {
    return request({
      url: '/user/login',
      method: 'POST',
      data
    })
  },

  // 注册
  register(data) {
    return request({
      url: '/user/register',
      method: 'POST',
      data
    })
  },

  // 获取用户信息
  getUserInfo() {
    return request({
      url: '/user/info',
      method: 'GET'
    })
  }
}

// 设备相关API
const deviceApi = {
  // 获取设备列表
  getDeviceList(params) {
    return request({
      url: '/device/list',
      method: 'GET',
      data: params
    })
  },

  // 获取设备详情
  getDeviceDetail(id) {
    return request({
      url: `/device/${id}`,
      method: 'GET'
    })
  },

  // 扫码租借设备
  rentDevice(data) {
    return request({
      url: '/device/rent',
      method: 'POST',
      data
    })
  }
}

// 订单相关API
const orderApi = {
  // 获取订单列表
  getOrderList(params) {
    return request({
      url: '/order/list',
      method: 'GET',
      data: params
    })
  },

  // 获取订单详情
  getOrderDetail(id) {
    return request({
      url: `/order/${id}`,
      method: 'GET'
    })
  },

  // 结束租借
  endRent(data) {
    return request({
      url: '/order/end',
      method: 'POST',
      data
    })
  }
}

// 钱包相关API
const walletApi = {
  // 获取钱包信息
  getWalletInfo() {
    return request({
      url: '/wallet/info',
      method: 'GET'
    })
  },

  // 充值
  recharge(data) {
    return request({
      url: '/wallet/recharge',
      method: 'POST',
      data
    })
  }
}

module.exports = {
  userApi,
  deviceApi,
  orderApi,
  walletApi
}